package com.san.report.service;

import java.util.List;
import java.util.Map;

import com.san.metadata.domain.DataSourceDO;
import com.san.report.vo.LegalPersonReportBaseVO;

/**
 * 法人信用报告服务类
 * 
 * @author hulp
 *
 */
public interface LegalPersonReportService {

	/**
	 * 获取业务元数据小类
	 * 
	 * @param busiTypeNode  业务元数据大类ID
	 * @param legalPersonId 法人ID
	 * @return
	 * @throws Exception
	 */
	List<Map<String, Object>> queryBusiDataByNode(Long busiTypeNode, String legalPersonId) throws Exception;

	/**
	 * 获取信用报告详细数据
	 * 
	 * @param dataSourceDO  数据源
	 * @param legalPersonId 法人ID
	 * @param busiSqldet    数据查询SQL
	 * @return
	 * @throws Exception
	 */
	List<Map<String, Object>> queryReportList(DataSourceDO dataSourceDO, String legalPersonId, String busiSqldet)
			throws Exception;

	/**
	 * 保存快照
	 * 
	 * @param legalPersonId 法人ID
	 * @param batch         批次号
	 * @param type          信用报告类型
	 * @param content       快照详细信息
	 * @param QRCode        二维码信息
	 * @return
	 * @throws Exception
	 */
	boolean save(String legalPersonId, String batch, int type, String content, String QRCode) throws Exception;

	/**
	 * 查询快照列表
	 * 
	 * @param legalPersonId 法人ID
	 * @param limit         分页参数
	 * @param offset        分页参数
	 * @return
	 * @throws Exception
	 */
	List<Map<String, Object>> listSnapshot(String legalPersonId, int limit, int offset) throws Exception;

	/**
	 * 查询快照
	 * 
	 * @param ssId 快照ID
	 * @return
	 * @throws Exception
	 */
	List<Map<String, Object>> viewSnapShot(String ssId) throws Exception;

	/**
	 * 查询基础信息
	 * 
	 * @param legalPersonId 法人ID
	 * @param tableName 基础数据表名称
	 * @param SourceCode 数据源编码
	 * @return
	 */
	LegalPersonReportBaseVO queryBaseData(String legalPersonId,String tableName, String SourceCode) throws Exception;
}
